home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / DirectPlay / Maze / MazeClient / D3DGraphics.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-31  |  4.7 KB  |  152 lines

  1. //----------------------------------------------------------------------------
  2. // File: d3dgraphics.h
  3. //
  4. // Desc: see main.cpp 
  5. //
  6. // Copyright (c) 1999-2001 Microsoft Corp. All rights reserved.
  7. //-----------------------------------------------------------------------------
  8. #ifndef _MAZE_GRAPHICS_H
  9. #define _MAZE_GRAPHICS_H
  10.  
  11.  
  12.  
  13. class CMazeApp;
  14.  
  15. struct VERTEX_TEXURED
  16. {
  17.     D3DXVECTOR3 vPos;
  18.     D3DXVECTOR3 vNormal;
  19.     FLOAT       fU, fV;
  20. };
  21. #define FVF_TEXTURED (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)
  22.  
  23.  
  24. struct VERTEX_DIFFUSE
  25. {
  26.     D3DXVECTOR3 vPos;
  27.     DWORD       dwDiffuse;
  28. };
  29. #define FVF_DIFFUSE (D3DFVF_XYZ|D3DFVF_DIFFUSE)
  30.  
  31.  
  32. struct VERTEX_TL_DIFFUSE
  33. {
  34.     D3DXVECTOR3 vPos;
  35.     float       fRHW;
  36.     DWORD       dwDiffuse;
  37. };
  38. #define FVF_TL_DIFFUSE (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
  39.  
  40.  
  41. struct VERTEX_TL_TEXTURED
  42. {
  43.     D3DXVECTOR3 vPos;
  44.     float       fRHW;
  45.     DWORD       dwDiffuse;
  46.     DWORD       dwSpecular;    
  47.     FLOAT       fU, fV;
  48. };
  49. #define FVF_TL_TEXTURED  (D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_SPECULAR|D3DFVF_TEX1)
  50.  
  51.  
  52. //-----------------------------------------------------------------------------
  53. // Name: 
  54. // Desc: 
  55. //-----------------------------------------------------------------------------
  56. class CD3DGraphics : public IMazeGraphics, public CD3DScreensaver
  57. {
  58. public:
  59.     CD3DGraphics();
  60.     ~CD3DGraphics();
  61.  
  62.     // From IMazeGraphics
  63.     virtual VOID    Init( CMazeApp* pMazeApp, CDPlay8Client* pDP8Client, CMazeClient* pMazeClient ); 
  64.     virtual HRESULT Create( HINSTANCE hInstance );
  65.     virtual INT     Run();
  66.     virtual void    HandleOutputMsg( EnumLineType enumLineType, TCHAR* strLine );
  67.     virtual BOOL    IsPreview() { return m_bIsPreview; };
  68.     virtual void    Shutdown();
  69.  
  70.     virtual BOOL    GetFloatWinInfo()                          { return FALSE; }
  71.     virtual VOID    SetDevice( UINT iDevice )                  { }
  72.     virtual HRESULT ConfirmDevice(D3DCAPS8*,DWORD,D3DFORMAT);
  73.     virtual HRESULT OneTimeSceneInit();
  74.     virtual HRESULT InitDeviceObjects();
  75.     virtual HRESULT RestoreDeviceObjects();
  76.     virtual HRESULT FrameMove();
  77.     virtual HRESULT Render();
  78.     virtual HRESULT InvalidateDeviceObjects();
  79.     virtual HRESULT DeleteDeviceObjects();
  80.     virtual HRESULT FinalCleanup();
  81.     virtual LRESULT SaverProc( HWND hWnd , UINT message , WPARAM wParam , LPARAM lParam );
  82.  
  83.     CMazeApp*           m_pMazeApp;
  84.     CDPlay8Client*      m_pDP8Client;
  85.     CMazeClient*        m_pMazeClient;
  86.  
  87. protected:
  88.     static INT_PTR CALLBACK StaticSaverConfigDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
  89.     INT_PTR CALLBACK        SaverConfigDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
  90.  
  91.     HRESULT PostCreate();
  92.     int     ScreenSaverDoConfig( BOOL bIsScreenSaverSettings );
  93.     void    ExtractSaverConfigDlgSettings( HWND hDlg );
  94.     void    PopulateSaverConfigDlg( HWND hDlg );
  95.     HRESULT CreateTextureFromResource( INT nResource, LPDIRECT3DTEXTURE8* ppTexture );
  96.     void    ComputeCameraMatrix();
  97.  
  98.     void    DrawFloor();
  99.     void    DrawWalls();
  100.     void    DrawCeiling();
  101.     void    DrawMiniMap();
  102.     void    DrawPlayers();
  103.     void    DrawIndicators();
  104.     void    LoadQuad( VERTEX_TEXURED* pVerts, WORD* pwIndex, WORD wOffset,
  105.                       const D3DXVECTOR3& vOrigin, const D3DXVECTOR3& vBasis1,
  106.                       const D3DXVECTOR3& vBasis2, const D3DXVECTOR3& vNormal );
  107.  
  108.     HINSTANCE               m_hInstance;
  109.  
  110.     MazeConfig*             m_pConfig;
  111.  
  112.     BOOL                    m_bIsPreview;
  113.     BOOL                    m_bIsScreenSaverSettings;
  114.  
  115.     DWORD                   m_dwStartMode;
  116.     DWORD                   m_dwAppFlags;
  117.     HWND                    m_hRefWindow;
  118.  
  119.     CD3DFont*               m_pFont;
  120.     CD3DFont*               m_pStatsFont;
  121.  
  122.     SmartVB<VERTEX_TEXURED,FVF_TEXTURED,1000> m_SmartVB;
  123.     LPDIRECT3DVERTEXBUFFER8 m_pMiniMapVB;
  124.     LPDIRECT3DVERTEXBUFFER8 m_pMiniMapBackgroundVB;
  125.     LPDIRECT3DVERTEXBUFFER8 m_pIndicatorVB;
  126.  
  127.     D3DXMATRIX              m_Projection;
  128.     D3DXMATRIX              m_Camera;
  129.  
  130.     D3DXVECTOR3             m_vCameraPos;
  131.     FLOAT                   m_fCameraYaw;
  132.  
  133.     D3DLIGHT8               m_Light;
  134.  
  135.     LPDIRECT3DTEXTURE8      m_pWallTexture;
  136.     LPDIRECT3DTEXTURE8      m_pFloorTexture;
  137.     LPDIRECT3DTEXTURE8      m_pCeilingTexture;
  138.     LPDIRECT3DTEXTURE8      m_pNetIconTexture;
  139.     LPDIRECT3DTEXTURE8      m_pLocalIconTexture;
  140.  
  141.     ID3DXMesh*              m_pSphere;
  142.     CD3DFile*               m_pPlayerMesh;
  143.     DWORD                   m_dwTesselation;
  144.  
  145.     enum { MAX_VISLIST = 300 };
  146.     MazeCellRef                             m_mcrVisList[MAX_VISLIST];
  147.     DWORD                                   m_dwNumVisibleCells;
  148. };
  149.  
  150.  
  151. #endif
  152.